/* To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.comprainsumos.MPersistencia;

import com.comprainsumos.modelo.Insumo;
import com.comprainsumos.modelo.InsumoProveedor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

public class MPinsumoProveedor {

    public static ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
    public static Connection con;

    public static InsumoProveedor getInsumoProveedor(String codprod,String codprov) throws SQLException, Exception {
        mbd.conectar();
        con = mbd.getConexion();

        if (codprod == null) {
            throw new SQLException("No hay elemento clave de la clase insumos");
        }
        ResultSet rs = null;
        PreparedStatement pst = null;
        InsumoProveedor insumoprov = null;
        try {
            pst = con.prepareStatement("SELECT * FROM insumoproveedor WHERE codprod = ? AND codproveedor =? ");
            pst.setString(1, codprod.trim());
            pst.setString(2, codprov.trim());
            rs = pst.executeQuery();
            while (rs.next()) {
                insumoprov = InsumoProveedor.load(rs);
            }
        } finally {
            if (rs != null) {
                rs.close();
            }
            if (pst != null) {
                pst.close();
            }
            return insumoprov;
        }
    }
    //Metodo que recibe como parametro un objeto de tipo Insumos para ingresarlo a la base de datos

    public static void crearInsumoProveedor(Insumo insumos) throws SQLException, Exception {
        mbd.conectar();
        con = mbd.getConexion();
        if (con == null) {
            throw new SQLException(" no hay conexion ");
        }
        PreparedStatement pst = null;
        try {
            pst = con.prepareStatement("Insert Into insumos values(?,?,?,?,?)");
            pst.setInt(1, insumos.getCodigo());
            pst.setString(2, insumos.getNombre());
            pst.setDouble(3, insumos.getCantidad());
            pst.setDouble(4, insumos.getStockMin());
            pst.setString(5, insumos.getUnidadmedia());
            pst.executeUpdate();
        } finally {
            if (pst != null) {
                pst.close();
            }
        }
    }

    public static void delInsumoProveedor(int codigo) throws SQLException, Exception {
        mbd.conectar();
        con = mbd.getConexion();

        if (codigo == 0) {
            throw new SQLException("No hay elemento clave de la clase insumos");
        }
        PreparedStatement pst = null;

        try {
            pst = con.prepareStatement("delete from insumos where codigo = ?");
            pst.setInt(1, codigo);
            pst.executeUpdate();

        } finally {
        }

    }
    //Metodo que recibe como parametro un objeto de tipo Insumos para acualizar un registro existente

    public static Insumo modInsumoProveedor(Insumo insumos) throws SQLException, Exception {
        mbd.conectar();
        con = mbd.getConexion();


        if (insumos == null) {
            throw new SQLException("No hay elemento clave de la clase insumos");
        }
        Insumo insu = null;
        PreparedStatement pst = null;

        try {
            //Construimos la sentencia SQL para actializar un registro existente
            pst = con.prepareStatement("UPDATE insumos SET  nombre = '" + insumos.getNombre() + "'"
                    + " ,cantidad = '" + insumos.getCantidad() + "', "
                    + "stockmin='" + insumos.getStockMin() + "',"
                    + " unidadmedia = '" + insumos.getUnidadmedia() + "' WHERE codigo = ?");
            pst.setInt(1, insumos.getCodigo());

            pst.executeUpdate();

        } finally {
        }

        return insu;

    }
    
    public static List<Insumo> listar() throws Exception {
        mbd.conectar();
        con = mbd.getConexion();
        ResultSet rs = null;
        PreparedStatement pst = null;
        List<Insumo> lista = new LinkedList();
        try {
            pst = con.prepareStatement("SELECT * FROM insumos");
            rs = pst.executeQuery();
            while (rs.next()) {
                lista.add(Insumo.load(rs));
            }
        } finally {
            if (rs != null) {
                rs.close();
            }
            if (pst != null) {
                pst.close();
            }
        }
        return lista;
    }
      public static List<InsumoProveedor> listarCodinsumo(int cod) throws Exception {
        mbd.conectar();
        con = mbd.getConexion();
        ResultSet rs = null;
        PreparedStatement pst = null;
        List<InsumoProveedor> lista = new LinkedList();
        try {
            pst = con.prepareStatement("SELECT * FROM insumoproveedor WHERE codprod = ?");
            pst.setInt(1, cod);
            rs = pst.executeQuery();
            while (rs.next()) {
                lista.add(InsumoProveedor.load(rs));
            }
        } finally {
            if (rs != null) {
                rs.close();
            }
            if (pst != null) {
                pst.close();
            }
        }
        return lista;
    }
}
